﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace ConsoleApp6
{
    class Program
    {
        static Student student = new Student("张三", 15, 110, '男');
        static Student student1 = new Student("李四", 19, 120, '男');
        static Student student2 = new Student("王五", 1, 119, '女');
        static Hashtable hashset = new Hashtable();
        static List<Student> hs = new List<Student>();
        static void Main(string[] args)
        {
            //            添加3个类，分别实现 IComparer<T>接口，实现对Student类的三个字段的排序。
            //1、学生类：学号、姓名、年龄
            //2、请选择：1、添加学生信息。2、查询学生信息。
            //3、重复的学号不能添加。
            //4、查询学生信息功能中有：1、查询所有（按学号排序）2、查询所有（按姓名排序），2、查询所有（按年龄排序）4、按学号查询（查没有，则打印查无此学生）5、退出
            hs.Add(student);
            hs.Add(student1);
            hs.Add(student2);
            hashset.Add(student.NUM, student);
            hashset.Add(student1.NUM, student);
            hashset.Add(student2.NUM, student);

            inquire1();
        }

        private static void inquire1()
        {
            Console.WriteLine("请选择：1、添加学生信息。2、查询学生信息");
            string key = Console.ReadLine();
            switch (key)
            {
                case "1":
                    Console.WriteLine("请输入你的名字");
                    string name = Console.ReadLine();
                    Console.WriteLine("请输入你的学号");
                    int num = int.Parse(Console.ReadLine());
                    Console.WriteLine("请输入你的年龄");
                    int age = int.Parse(Console.ReadLine());
                    Student student = new Student(name,num,age);

                    if (hashset.Contains(num))
                    {
                        Console.WriteLine("你输入的学号已存在！！！");
                        inquire1();
                    }
                    else
                    {
                        hashset.Add(student.NUM, student);
                        hs.Add(student);
                        Console.WriteLine("注册成功");
                        inquire1();
                    }
                    Console.ReadKey();

                    break;
                case "2":
                    inquire2();
                    break;
                default:
                    break;
            }
        }

        private static void inquire2()
        {
            Console.WriteLine("1、查询所有（按学号排序）2、查询所有（按姓名排序），2、查询所有（按年龄排序）4、按学号查询（查没有，则打印查无此学生）5、退出");
            int key1 = int.Parse(Console.ReadLine());
            switch (key1)
            {
                case 1:
                    Console.WriteLine("查询所有 （按学号排序）");
                    foreach (var item in hs)
                    {
                        Console.WriteLine(item);
                    }
                    inquire1();
                    break;
                case 2:
                    Console.WriteLine("查询所有（按姓名排序）");
                    hs.Sort(new Sex());
                    foreach (var item in hs)
                    {
                        Console.WriteLine(item);
                    }
                    inquire2();
                    break;
                case 3:
                    Console.WriteLine("查询所有（按年龄排序）");
                    hs.Sort(new Age());
                    foreach (var item in hs)
                    {
                        Console.WriteLine(item);
                    }
                    inquire2();
                    break;
                case 4:
                    Console.WriteLine("按学号查询（查没有，则打印查无此学生）");
                    Console.WriteLine("请输入你要查询的学号！");
                    int a = int.Parse(Console.ReadLine());
                        if (hashset.Contains(a))
                        {
                        Console.WriteLine("该学生存在！");
                        inquire2();
                    }
                    else
                    {
                        Console.WriteLine("该学生不存在！");
                        inquire2();
                    }
                    break;

                case 5:
                    Console.WriteLine("欢迎使用！");
                    break;

                default:
                    break;
            }
        }
    }
}
